home *** CD-ROM | disk | FTP | other *** search
/ .net 2002 March / DotNetMagazine-Issue107-Coverdisc-NET107-02-03-PCMac.bin / pc / PC Software / free_browsing / DavesQckSearchDbar3-14 / dqsd.exe / categoryExpander.htc < prev    next >
Text File  |  2002-06-07  |  3KB  |  89 lines

  1. <attach event="onclick" handler="doClick"/>
  2. <attach event="onreadystatechange" handler="onReadyStateChange"/>
  3. <property name="category"/>
  4. <property name="type"/>
  5.  
  6. <script language="JScript">
  7.   function onReadyStateChange()
  8.   {
  9.     var el = event.srcElement;
  10.  
  11.     if ( type )
  12.     {
  13.       el.title = (type == 'expandall' ? 'Expand all category groupings.  (Very helpful if searching this window.)' : 'Collapse all category groupings');
  14.       return;
  15.     }
  16.  
  17.     el.innerText = '[-]';
  18.     el.title = 'Collapse list of searches for this category';
  19.  
  20.     doClick();
  21.  
  22.     var elTable = el.parentElement;
  23.     while ( elTable && elTable.tagName != 'TABLE' )
  24.       elTable = elTable.parentElement;
  25.  
  26.     elTable = elTable.parentElement;
  27.     while ( elTable && elTable.tagName != 'TBODY' )
  28.       elTable = elTable.parentElement;
  29.  
  30.     var elCount = el.parentElement.all('categoryCount');
  31.     var rows = elTable.children[ category ];
  32.     if ( !rows.length )
  33.       rows = new Array(rows); // in case there's only one
  34.     var nCount = rows.length;
  35.     var nEnabled = 0;
  36.     for ( var iSearch = 0; iSearch < nCount; iSearch++ )
  37.     {
  38.       var toggle = rows[ iSearch ].cells(1).all('search_enabled');
  39.       if ( toggle.checked )
  40.         nEnabled += 1;
  41.     }
  42.     elCount.innerText = '(' + nEnabled + '/' + (nCount ? nCount : 1) + ')';
  43.   }
  44.  
  45.   function doClick()
  46.   {
  47.     try
  48.     {
  49.       var el = event.srcElement;
  50.       if ( type )
  51.       {
  52.         var elBody = el.parentElement;
  53.         while ( elBody && elBody.tagName != 'BODY' )
  54.           elBody = elBody.parentElement;
  55.         var expanders = elBody.all( 'categoryExpander' );
  56.         for ( var i = 0; i < expanders.length; i++ )
  57.         {
  58.           expanders[i].innerText = type == 'expandall' ? '[+]' : '[-]';
  59.           expanders[i].fireEvent("onclick");
  60.         }
  61.         return;
  62.       }
  63.  
  64.       var elTable = el.parentElement;
  65.       while ( elTable && elTable.tagName != 'TABLE' )
  66.         elTable = elTable.parentElement;
  67.  
  68.       elTable = elTable.parentElement;
  69.       while ( elTable && elTable.tagName != 'TBODY' )
  70.         elTable = elTable.parentElement;
  71.  
  72.       var expand = el.innerText.substring( 0, 3 ) == '[+]';
  73.  
  74.       var rows = elTable.children[ category ];
  75.       if ( !rows.length )
  76.         rows = new Array( rows );
  77.       for ( var i = 0; i < rows.length; i++ )
  78.         rows[i].style.display = (expand ? '' : 'none');
  79.  
  80.       el.innerText = '[' + (expand ? '-' : '+') + ']';
  81.       el.title = (expand ? 'Collapse' : 'Expand') + ' list of searches for this category';
  82.     }
  83.     catch ( e )
  84.     {
  85.       alert( e.description );
  86.     }
  87.   }
  88. </script>
  89.